package br.com.egg.finances.dao;

import java.sql.CallableStatement;
import java.sql.SQLException;

import br.com.egg.finances.business.exception.BusinessException;
import br.com.egg.finances.model.Entity;

public abstract class DefaultDAO<T extends Entity> implements EntityDAO<T> {
	
	public static final String MENSAGEM_SUCESSO = "SUCESSO";

	@Override
	public void save(T entity) {
		if (entity.isStatusInsert()) {
			this.insert(entity);
		} else if (entity.isStatusUpdate()) {
			this.update(entity);
		} else if (entity.isStatusDelete()) {
			this.delete(entity);
		}
	}
	
	protected void validaChamdaProcedure(CallableStatement callableStatement, int posicao) throws SQLException {
		String mensagem = callableStatement.getString(posicao);
		if (!MENSAGEM_SUCESSO.equals(mensagem)) {
			throw new BusinessException(mensagem);
		}
	}

}
